package site.psvm.MyJpa;


import java.lang.reflect.ParameterizedType;


public class testClass {


    public static void main(String[] args) {
        B b = new B();
        //C c = new C();
    }

}

class A<T>{
    public A(){
       /*
        我想在这里获得子类B、C传递的实际类型参数的Class对象
        class java.lang.String/class java.lang.Integer
       */
        //父类中的this,new谁便是谁
        Class<? extends A> aClass = this.getClass();
        System.out.println("父类构造器中实例化了一个: " + aClass.getName());
        //向下转型 Type转ParameterizedType
        ParameterizedType genericSuperclass  = (ParameterizedType)aClass.getGenericSuperclass();

        //他只有一个泛型参数,直接获取第一个[0]
        Class actualTypeArgument = (Class)genericSuperclass.getActualTypeArguments()[0];
        System.out.println("他的泛型参数是: "+actualTypeArgument.getName());
        System.out.println("他的SimpleName是: "+actualTypeArgument.getSimpleName());
    }
}

class B extends A<String>{
}

class C extends A<Integer>{
}